package org.javanum.number;

/**
 * <p>Defines the Real Field.</p>
 * 
 * <p>This interface defines the <i>Real subfield</i> of the complex numbers.
 * This is the traditional concept of real numbers and should be understood
 * as such.</p>
 * 
 * 
 * @author Scott Fines
 * Date: Oct 31, 2009
 *
 * @param <V> the return type of this implementation.
 * @param <T> the return type of the backing data structure.
 */
public interface RealField<V extends RealField<V,T>, T extends Number>
                            extends Field<V> {
	
	/**
	 * <p>The <i>Absolute value</i> of a real number {@code a} 
	 * is defined as the real number {@code b} such that:</p>
	 * 
	 * <p>If {@code a>=0}, then {@code b==a}</p>
	 * <p>If {@code a<0}, then {@code b ==a.negative()}</p>
	 * 
	 * @return the absolute value of the real number {@code this},
	 * as in implementation of this interface.
	 */
	public V abs();
	
	/**
	 * 
	 * @return a representation of this number in the backing data 
	 * structure for this implementation. 
	 */
	public T value();

}
